1 REM BIT MAP TUTORIAL 2 REM WITH COLOR 3 REM BY 4 REM MORTON KEVELSON 10 POKE 56578,PEEK(56578) OR 3:REM SET CIA FOR OUTPUT 15 A=0:REM VIDEO BANK 3 ($C000-$FFFF) 20 POKE 56576,(PEEK(56576) AND 252) OR A:REM SELECT VIDEO BANK 30 POKE 53265,PEEK(53265) OR 32:REM SET HI-RES 40 OS=PEEK(53272):REM STORE ORIGINAL SCREEN LOCATION 50 POKE 53272,PEEK(53272) OR 8:REM SET BIT MAP OFFSET TO 8192 60 POKE 53272,PEEK(53272) AND 15:REM SET SCREEN OFFSET TO 0 70 BM=57344:REM START OF BIT MAP 80 SM=49152:REM START OF SCREEN 90 CM=55296:REM START OF COLOR MEM 100 BG=53281:REM BGROUND FOR MULTICOLOR 105 HN=0:LN=1:CN=6:BC=14:SC=HN*16+LN:REM START COLORS 110 FOR I=0 TO 999:REM CLEAR SCREEN AND SET COLORS 120 POKE SM+I,SC:REM SET SCREEN COLORS 130 POKE CM+I,CN:REM SET COLOR MEM 140 NEXT I 150 POKE BG,BC:REM SET BGROUND COLOR 160 FOR I=0 TO 7999:REM CLEAR BIT MAP 170 POKE BM+I,0 180 NEXT I 190 R1=11:REM START SCREEN ROW 200 R2=14:REM END SCREEN ROW 210 C1=18:C2=22:REM START & END COLUMN 220 NB=(C2-C1)*8+7:REM NUMBER OF BYTES PER ROW 230 REM FILL PATTERNS 235 DATA 102,68,85,170,204,99 240 CN=6:CT=CN:REM NUMBER OF FILL PATTERNS 250 READ PT:CT=CT-1:IF CT=0 THEN CT=CN:RESTORE 260 GOSUB 1000 270 GOSUB 2000 280 GOTO 250 1000 FOR RO=R1 TO R2:REM FILL WITH PATTERN 1010 FI=BM+RO*320+C1*8:REM CALC FIRST ROW BYTE 1020 FOR J=0 TO NB:REM FILL ROW 1030 POKE FI+J,PT 1040 NEXT J 1050 NEXT RO 1060 RETURN 2000 GET A$ 2010 IF A$="[133]" THEN POKE 53270,PEEK(53270) AND 239:REM F1=HI-RES 2020 IF A$="[134]" THEN POKE 53270,PEEK(53270) OR 16:REM F3=MULTI-COLOR 2030 IF A$="[135]" THEN RETURN:REM F5=GET NEXT PATTERN 2040 IF A$="[136]" GOTO 3000:REM F7=QUIT 2050 IF A$="[137]" THEN MM=SM:GOSUB4000:GOSUB4100:REM HI-NYBBLE 2060 IF A$="[138]" THEN MM=SM:GOSUB4020:GOSUB4100:REM LO-NYBBLE 2070 IF A$="[139]" THEN MM=CM:GOSUB4040:GOSUB4100:REM COLOR MEM 2080 IF A$="[140]" THEN GOSUB4060:REM BGROUND NYBBLE 2090 GOTO2000 3000 POKE 56576,(PEEK(56576) AND 252) OR 3:REM RESTORE TEXT DISPLAY 3010 POKE 53265,(PEEK(53265) AND 223) 3020 POKE 53270,PEEK(53270) AND 239 3030 POKE 53272,OS:POKE BG,6:FOR I=0 TO 999:POKE CM+I,14:NEXT I 3040 END 4000 HN=HN+1:IF HN>15 THEN HN=0 4010 CV=HN*16+LN:RETURN 4020 LN=LN+1:IF LN>15 THEN LN=0 4030 GOTO 4010 4040 CN=CN+1:IF CN>15 THEN CN=0:CV=0:RETURN 4050 CV=CN:RETURN 4060 BC=BC+1:IF BC>15 THEN BC=0 4070 POKE BG,BC:RETURN 4100 FOR RO=R1 TO R2 4110 FS=MM+RO*40+CO 4120 FOR CB=C1 TO C2 4130 POKE FS+CB,CV 4140 NEXT CB:NEXT RO 4150 RETURN